/*
 * Created on 2006-2-22
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package cn.com.sbell.vss.csg.vap;

import org.dom4j.Element;

import cn.com.sbell.vss.VssConstants;
import cn.com.sbell.vss.VssException;
import cn.com.sbell.vss.csg.vap.bean.SerialPortInfo;
import cn.com.sbell.vss.csg.vsclient.VsClient;
import cn.com.sbell.vss.csg.vsclient.util.BeanValidator;
import cn.com.sbell.vss.csg.vsclient.util.PropertiesHolder;

/**
 * @author liang.a.chen
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class SetVsSerialPort extends ProtectedVsCommander {

	protected Element executeCommand(VsClient vsClient,
			PropertiesHolder holder, Element root) {
		SerialPortInfo serialPortInfo = (SerialPortInfo) holder
				.populate(new SerialPortInfo());
		BeanValidator.validateNotNull(serialPortInfo, new String[] { "port",
				"baudRate", "dataBit", "parity", "stopBit" });
		Integer port = serialPortInfo.getPort();
		if (port.intValue() == 2) {
			if (!vsClient.setDecoderCfg(serialPortInfo)) {
				throw new VssException(VssConstants.CODE_SETDECODER_FAILED);
			}
		} else {
			if (!vsClient.setSerialPortInfo(serialPortInfo)) {
				throw new VssException(VssConstants.CODE_SETVSSERIALPORT_FAILED);
			}
		}

		return root;
	}

}
